home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / man / cat.6 / xspringies.6 < prev    next >
Text File  |  1995-07-25  |  35KB  |  661 lines

  1.  
  2.  
  3.  
  4.      XXXXSSSSPPPPRRRRIIIINNNNGGGGIIIIEEEESSSS((((1111))))   UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((SSSSeeeepppptttteeeemmmmbbbbeeeerrrr 1111,,,, 1111999999992222))))   XXXXSSSSPPPPRRRRIIIINNNNGGGGIIIIEEEESSSS((((1111))))
  5.  
  6.  
  7.  
  8.      NNNNAAAAMMMMEEEE
  9.           xspringies - a mass and spring simulation system for X
  10.           windows
  11.  
  12.      SSSSYYYYNNNNTTTTAAAAXXXX
  13.           xxxxsssspppprrrriiiinnnnggggiiiieeeessss [ _o_p_t_i_o_n_s ]
  14.  
  15.      DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  16.           xxxxsssspppprrrriiiinnnnggggiiiieeeessss is a simulator which allows you to interactively
  17.           create and edit a system of masses and springs.  The
  18.           parameters of the masses and springs (such as mass
  19.           elasticity and spring K) as well as those of the surrounding
  20.           system (such as air viscosity and gravity) can be changed.
  21.           These systems can be loaded and saved into a file.
  22.  
  23.           I guess you could use xxxxsssspppprrrriiiinnnnggggiiiieeeessss for real work, but it's
  24.           really intended to be a time waster.
  25.  
  26.      OOOOPPPPTTTTIIIIOOOONNNNSSSS
  27.           -bg _c_o_l_o_r
  28.                Specifies the color of the window background.  The
  29.                default is black.
  30.  
  31.           -d _d_i_s_p_n_a_m_e
  32.                Specifies the display screen on which xxxxsssspppprrrriiiinnnnggggiiiieeeessss
  33.                displays its window.  If the display option is not
  34.                specified, xxxxsssspppprrrriiiinnnnggggiiiieeeessss uses the display screen specified
  35.                by your DISPLAY environment variable.
  36.  
  37.           -display _d_i_s_p_n_a_m_e
  38.                This option is the same as the ----dddd option.
  39.  
  40.           -fg _c_o_l_o_r
  41.                Specifies the foreground color of the window.  The
  42.                default is white.
  43.  
  44.           -geometry _g_e_o_m
  45.                Specifies the width, height, and location of the
  46.                xxxxsssspppprrrriiiinnnnggggiiiieeeessss window.  If the geometry option is not
  47.                specified, xxxxsssspppprrrriiiinnnnggggiiiieeeessss uses default values.  The
  48.                geometry option has the format
  49.                     [=][_w_i_d_t_hx_h_e_i_g_h_t][+/-_x_o_f_f_s_e_t+/-_y_o_f_f_s_e_t].
  50.  
  51.           -nbb This option turns off the bounding-box optimization.
  52.                To produce smooth animation, xxxxsssspppprrrriiiinnnnggggiiiieeeessss redraws the
  53.                smallest screen region which contains all objects.  For
  54.                smaller objects, the performance improvement is very
  55.                noticible -- this is the bounding-box optimization.  By
  56.                disabling it with this option, xxxxsssspppprrrriiiinnnnggggiiiieeeessss redraws the
  57.                entire display window.  On slower machines or larger
  58.                window sizes, this can produce slow results.  The main
  59.                reason for using this option is if the bounding-box
  60.  
  61.  
  62.  
  63.      Page 1                                           (printed 7/7/95)
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.      XXXXSSSSPPPPRRRRIIIINNNNGGGGIIIIEEEESSSS((((1111))))   UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((SSSSeeeepppptttteeeemmmmbbbbeeeerrrr 1111,,,, 1111999999992222))))   XXXXSSSSPPPPRRRRIIIINNNNGGGGIIIIEEEESSSS((((1111))))
  71.  
  72.  
  73.  
  74.                changes size rapidly, causing uneven animation.
  75.  
  76.           -hl _c_o_l_o_r
  77.                Specifies the color of the button and selection
  78.                highlights in the window.  This defaults to the
  79.                foreground color, or to green on color displays.
  80.  
  81.           -rv  Specifies that the foreground and background colors be
  82.                reversed.
  83.  
  84.           -st _t_h_i_c_k_n_e_s_s
  85.                Specifies the thickness of the springs in pixels (0 is
  86.                the default value)
  87.  
  88.      SSSSUUUUMMMMMMMMAAAARRRRYYYY OOOOFFFF OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN
  89.             The left side of the xxxxsssspppprrrriiiinnnnggggiiiieeeessss window contains the
  90.           controls, and the right side contains the display.  Masses
  91.           can be created and placed with the mouse when in MMMMaaaassssssss mode,
  92.           and springs can be created when in SSSSpppprrrriiiinnnngggg mode.  Temporary
  93.           springs that connect the mouse and any mass can be used to
  94.           pull on objects.  Masses and springs can be selected in edit
  95.           mode, and moved around.  Parameters of the masses and
  96.           springs (such as Mass or Elasticity) can be set upon
  97.           creation or if they are selected.
  98.  
  99.             Forces (such as gravity) can be enabled by pressing the
  100.           appropriate force button with customizable parameters.
  101.           Environment parameters such as viscosity of the medium and
  102.           stickiness of the walls can also be set.  Each of the four
  103.           walls can be disabled.
  104.  
  105.             The animation/simulation is activated by pressing the GGGGOOOO!!!!
  106.           button.
  107.  
  108.             The entire system (masses, springs and parameters) can be
  109.           loaded and saved to files.  XXXXsssspppprrrriiiinnnnggggiiiieeeessss comes with many
  110.           demonstration files.
  111.  
  112.  
  113.      CCCCOOOONNNNTTTTRRRROOOOLLLLSSSS
  114.             There are three types of controls (widgets) in xxxxsssspppprrrriiiinnnnggggiiiieeeessss.
  115.           There are push buttons, checkboxes and sliders.  The push
  116.           buttons and checkboxes act in the obvious manner.  If you
  117.           click on them, they get activated.
  118.  
  119.             Sliders are a little more compilicated.  They consist of a
  120.           left arrow button, a right arrow button, and a text box.
  121.           The text box displays the current value.  Clicking on this
  122.           text box causes it to become highlighted.  All text input
  123.           then goes to the text box.  After entering a value, return
  124.           accepts it, and escape cancels.
  125.             The value displayed can also be changed by pressing the
  126.  
  127.  
  128.  
  129.      Page 2                                           (printed 7/7/95)
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.      XXXXSSSSPPPPRRRRIIIINNNNGGGGIIIIEEEESSSS((((1111))))   UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((SSSSeeeepppptttteeeemmmmbbbbeeeerrrr 1111,,,, 1111999999992222))))   XXXXSSSSPPPPRRRRIIIINNNNGGGGIIIIEEEESSSS((((1111))))
  137.  
  138.  
  139.  
  140.           arrow buttons.  Using the _L_e_f_t _m_o_u_s_e _b_u_t_t_o_n causes the value
  141.           to be incremented or decremented by one step.  The _M_i_d_d_l_e
  142.           _m_o_u_s_e _b_u_t_t_o_n is the same as the left mouse button, but
  143.           holding it down causes it to scan by one step at a time.
  144.           The _R_i_g_h_t _m_o_u_s_e _b_u_t_t_o_n scans like the _M_i_d_d_l_e _m_o_u_s_e _b_u_t_t_o_n
  145.           except that it scans 10 steps at a time.
  146.  
  147.  
  148.      EEEEDDDDIIIITTTTIIIINNNNGGGG MMMMOOOODDDDEEEESSSS
  149.             There are three main modes in xxxxsssspppprrrriiiinnnnggggiiiieeeessss.  These are _E_d_i_t,
  150.           _M_a_s_s and _S_p_r_i_n_g. In _E_d_i_t mode, you can select, move and
  151.           throw objects.  In _M_a_s_s mode, you can create masses.  In
  152.           _S_p_r_i_n_g mode, you can create springs and tug on an object
  153.           with a spring connected to the mouse.
  154.  
  155.           More specifically,
  156.  
  157.           _E_d_i_t mmmmooooddddeeee::::
  158.                ---- _L_e_f_t _m_o_u_s_e _b_u_t_t_o_n selects objects.
  159.                  If you click on or near an object, it becomes
  160.                selected, and all other objects become unselected. If
  161.                you hold down shift while clicking, the object becomes
  162.                selected (or unselected if it was already selected),
  163.                and all other objects remain the same.
  164.                  If you do not click near an object, dragging the
  165.                mouse causes a selection box to appear.  Anything
  166.                within the selection box when the mouse is released
  167.                becomes selected.  All other masses become unselected,
  168.                unless the shift key was held down for the initial
  169.                click.
  170.  
  171.                ---- _M_i_d_d_l_e _m_o_u_s_e _b_u_t_t_o_n moves objects.
  172.                  All selected objects move with the mouse.  The masses
  173.                are frozen in their positions after the initial click.
  174.                They continue to move relative to the mouse movement
  175.                until the middle button is released.
  176.  
  177.                ---- _R_i_g_h_t _m_o_u_s_e _b_u_t_t_o_n throws objects.
  178.                  This acts the same way as moving objects with the
  179.                middle button, except for the fact that the mouse
  180.                velocity is transferred to all selected objects when
  181.                the right mouse button is released.
  182.                  Note: a good way to stop an object from moving is to
  183.                simply select it and click the right mouse button.
  184.  
  185.           _M_a_s_s mmmmooooddddeeee::::
  186.                  When you click with the mouse, a mass appears.  The
  187.                mass takes on the values of the _M_a_s_s and _E_l_a_s_t_i_c_i_t_y
  188.                sliders.  The mass is placed when the mouse button is
  189.                released.
  190.  
  191.           _S_p_r_i_n_g mmmmooooddddeeee::::
  192.  
  193.  
  194.  
  195.      Page 3                                           (printed 7/7/95)
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.      XXXXSSSSPPPPRRRRIIIINNNNGGGGIIIIEEEESSSS((((1111))))   UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((SSSSeeeepppptttteeeemmmmbbbbeeeerrrr 1111,,,, 1111999999992222))))   XXXXSSSSPPPPRRRRIIIINNNNGGGGIIIIEEEESSSS((((1111))))
  203.  
  204.  
  205.  
  206.                  When you click with the mouse, if there is a mass
  207.                nearby, one end of a spring is connected to it.  The
  208.                other end of the spring is connected to the cursor
  209.                until the mouse button is released.  If no mass is
  210.                nearby when the spring is released, the spring is
  211.                discarded.  The new spring takes on the values of the
  212.                _K_s_p_r_i_n_g and _K_d_a_m_p sliders.  The rest length of the
  213.                spring is equal to the length of the spring when it was
  214.                created.
  215.  
  216.                ---- _L_e_f_t _m_o_u_s_e _b_u_t_t_o_n adds a spring between two masses
  217.                while actively affecting the first mass.
  218.  
  219.                ---- _M_i_d_d_l_e _m_o_u_s_e _b_u_t_t_o_n adds a spring between the first
  220.                mass and the cursor, actively affecting the first mass.
  221.                The spring is discarded when the mouse button is
  222.                released.
  223.  
  224.                ---- _R_i_g_h_t _m_o_u_s_e _b_u_t_t_o_n adds a spring between two masses.
  225.                The first mass is not affected by the spring until the
  226.                spring is in place after the mouse is released.
  227.  
  228.  
  229.      OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN
  230.           Masses and Springs
  231.                  Accelerations on the masses are calculated according
  232.                to gravity (and other special forces), viscous forces,
  233.                and by forces from the springs.  When a mass collides
  234.                with a wall, its velocity in the direction of the wall
  235.                is reversed.  The resulting velocity is multipled by
  236.                the _E_l_a_s_t_i_c_i_t_y of the mass.  So, an elasticity of 0.0
  237.                causes an inelastic collision (it stops on the wall),
  238.                and an elasticity of 1.0 results in an elastic
  239.                collision.
  240.                  If a mass is fixed, all forces on it are ignored.  It
  241.                simply does not move.  Think of it as a nail (a really
  242.                good one).
  243.                  The _M_a_s_s and _E_l_a_s_t_i_c_i_t_y of a mass can be changed by
  244.                selecting the mass and changing the values on the
  245.                corresponding sliders.  To make a mass fixed or
  246.                unfixed, check or uncheck the _F_i_x_e_d _M_a_s_s checkbox while
  247.                the mass is selected.
  248.  
  249.                  A spring has three parameters associated with it.
  250.                _K_s_p_r_i_n_g, _K_d_a_m_p and rest length.  The spring force is
  251.                calculated as follows (according to Hooke's law):
  252.                      FFFF = - _K_s_p_r_i_n_g * (length - rest length) - _K_d_a_m_p *
  253.                          (velocity in spring direction)
  254.  
  255.                  To change the _K_s_p_r_i_n_g or _K_d_a_m_p of a spring, change
  256.                the values of the sliders when the spring is selected.
  257.                Pressing the _S_e_t _R_e_s_t _L_e_n_g_t_h button changes the rest
  258.  
  259.  
  260.  
  261.      Page 4                                           (printed 7/7/95)
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.      XXXXSSSSPPPPRRRRIIIINNNNGGGGIIIIEEEESSSS((((1111))))   UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((SSSSeeeepppptttteeeemmmmbbbbeeeerrrr 1111,,,, 1111999999992222))))   XXXXSSSSPPPPRRRRIIIINNNNGGGGIIIIEEEESSSS((((1111))))
  269.  
  270.  
  271.  
  272.                length of a selected spring to its current length.
  273.  
  274.  
  275.           Forces and sticky stuff
  276.                  There are four special forces.  They can be turned on
  277.                and off by clicking their appropriate box.  When
  278.                highlighted, the force is on.  Each of these forces has
  279.                two parameters associated with it (for example,
  280.                _M_a_g_n_i_t_u_d_e and _D_i_r_e_c_t_i_o_n for gravity).  Only one
  281.                forces's parameters are displayed at a time (below the
  282.                force buttons).  Which particular force is shown by a
  283.                darker box around that force.  This force selector box
  284.                is moved to another force whenever a force is turned
  285.                on.
  286.  
  287.                  Some of the forces are applied relative to some
  288.                specified origin, or center point.  By default, this
  289.                center point is the center of the screen.  It can be
  290.                changed to be any one particular mass by selecting a
  291.                single mass, and pushing the _S_e_t _C_e_n_t_e_r button.  If no
  292.                masses are selected, the current center is changed to
  293.                be the center of the screen.
  294.                  Center points are marked by a box around the center
  295.                mass.
  296.  
  297.                  There are four forces that can be enabled.  The first
  298.                one, _G_r_a_v_i_t_y, acts in the familiar manner.  It
  299.                accelerates masses by the value specified by _G_r_a_v_i_t_y in
  300.                a direction specified by _D_i_r_e_c_t_i_o_n. The _D_i_r_e_c_t_i_o_n is
  301.                measured in degrees, with 0.0 degrees being down,
  302.                increasing counter-clockwise.
  303.                  The second force is a bit strange, and isn't real.
  304.                Its a force which attracts the center of mass of all
  305.                the objects toward the center point.  It has a
  306.                _M_a_g_n_i_t_u_d_e and a _D_a_m_p_i_n_g coefficient.
  307.                  The third force is a force which attracts all masses
  308.                toward the center point.  This force has a _M_a_g_n_i_t_u_d_e
  309.                and an _E_x_p_o_n_e_n_t associated with it.  The _E_x_p_o_n_e_n_t is
  310.                simply how the force relation works.  A value of 2.0
  311.                means inverse-square force (the force is inversely
  312.                proportional to the distance squared).  A value of 0.0
  313.                is a constant force independent of position.  If the
  314.                _M_a_g_n_i_t_u_d_e of this force is negative, it becomes a
  315.                repulsion force.
  316.                  The fourth force is a wall repulsion force.  Masses
  317.                are repelled by a force from each wall that is on.
  318.                This force has a _M_a_g_n_i_t_u_d_e and _E_x_p_o_n_e_n_t associated with
  319.                it.  The _E_x_p_o_n_e_n_t behaves similarly to that of the
  320.                third force.
  321.  
  322.                  For the most part, most everything obeys _f = _m_a. The
  323.                only exceptions are wall bounces and wall stickiness.
  324.  
  325.  
  326.  
  327.      Page 5                                           (printed 7/7/95)
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.      XXXXSSSSPPPPRRRRIIIINNNNGGGGIIIIEEEESSSS((((1111))))   UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((SSSSeeeepppptttteeeemmmmbbbbeeeerrrr 1111,,,, 1111999999992222))))   XXXXSSSSPPPPRRRRIIIINNNNGGGGIIIIEEEESSSS((((1111))))
  335.  
  336.  
  337.  
  338.                Another unphysical aspect is found in some of the
  339.                special forces (the second and third ones).  If a
  340.                center point exists, that mass does not receive any
  341.                force response from other masses due to the special
  342.                force.  In other words, these two special forces are
  343.                not _e_q_u_a_l _a_n_d _o_p_p_o_s_i_t_e forces.  They're pretty much
  344.                just unreal.
  345.  
  346.                  _V_i_s_c_o_s_i_t_y is a viscous drag force which applies a
  347.                resistive force on the masses proportional to their
  348.                velocity.
  349.                  _S_t_i_c_k_i_n_e_s_s is not a real force.  When a mass hits a
  350.                wall, it loses part of its velocity component in the
  351.                direction of the wall (in an amount proportional to the
  352.                _S_t_i_c_k_i_n_e_s_s). If it loses all of this component, it
  353.                remains stuck to the wall.  It will remain stuck to the
  354.                wall until a force (which exceeds an amount
  355.                proportional to the _S_t_i_c_k_i_n_e_s_s) pulls it off the wall.
  356.  
  357.  
  358.           Numerics
  359.                  The internals of xxxxsssspppprrrriiiinnnnggggiiiieeeessss consist of a fourth order
  360.                Runge-Kutta (RK4) differental equation solver.  Consult
  361.                a Numerical Methods text for more information.  The
  362.                _T_i_m_e _S_t_e_p that is used by this solver (the ddddtttt) can be
  363.                set using the slider.
  364.                  The solver can be selectively made into an adaptive
  365.                RK4 solver using the _A_d_a_p_t_i_v_e _T_i_m_e _S_t_e_p checkbox.  An
  366.                adaptive solver chooses the best time step value
  367.                according to an error calculation.  The error is not
  368.                allowed to exceed the _P_r_e_c_i_s_i_o_n value.  Lower precision
  369.                values result in smaller time steps.  While this is
  370.                more accurate, the simulation runs slower.
  371.                  You will notice that some objects will tend to "blow
  372.                up" easily.  This is because the objects are unstable,
  373.                or are sensitive to small numerical errors.  An object
  374.                will tend to "blow up" less with smaller time steps.
  375.                By using an adaptive solver, the simulation can be made
  376.                more accurate only when necessary.  This results in a
  377.                more stable system which runs at a reasonable speed.
  378.  
  379.  
  380.           Walls
  381.                  There are four walls.  In case you haven't guessed by
  382.                now, they are the _t_o_p, _l_e_f_t, _r_i_g_h_t and _b_o_t_t_o_m walls.
  383.                They are located at the window boundaries; they move
  384.                with window resizes.  Individual walls can be enabled
  385.                and disabled by checking the corresponding checkboxes.
  386.  
  387.                  Walls are only one-way.  An object moving from the
  388.                screen toward a wall will bounce off the wall.  But an
  389.                object moving from off screen toward the screen will
  390.  
  391.  
  392.  
  393.      Page 6                                           (printed 7/7/95)
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.      XXXXSSSSPPPPRRRRIIIINNNNGGGGIIIIEEEESSSS((((1111))))   UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((SSSSeeeepppptttteeeemmmmbbbbeeeerrrr 1111,,,, 1111999999992222))))   XXXXSSSSPPPPRRRRIIIINNNNGGGGIIIIEEEESSSS((((1111))))
  401.  
  402.  
  403.  
  404.                pass through the walls.
  405.  
  406.  
  407.           Saving and Restoring State
  408.                  The state of the world (at least for xxxxsssspppprrrriiiinnnnggggiiiieeeessss)
  409.                includes all of the masses and springs, as well as the
  410.                system parameters.  By pushing the _S_a_v_e _S_t_a_t_e button,
  411.                the current system state is saved.   By pushing the
  412.                _R_e_s_t_o_r_e _S_t_a_t_e _b_u_t_t_o_n the previously saved system state
  413.                is restored (if no previous save was made, the initial
  414.                state is used).
  415.  
  416.                  This is useful for temporarily saving a system
  417.                configuration that you do not feel like setting up
  418.                again (or saving to a file), that you might disturb
  419.                with experimentation.  If you break it, you can _R_e_s_t_o_r_e
  420.                _S_t_a_t_e any number of times you like.
  421.                  The _R_e_s_e_t button resets xxxxsssspppprrrriiiinnnnggggiiiieeeessss to its initial
  422.                configuration.  All the masses and springs are removed,
  423.                and the default system parameters are used.
  424.  
  425.  
  426.           Saving and Loading Files
  427.                  The system state can be saved to and loaded from
  428.                files.  By pushing the _L_o_a_d _F_i_l_e button, a previously
  429.                saved file can be loaded.  This will load up all the
  430.                masses and springs that were saved, as well as the
  431.                system parameters.  Any previous state before the load
  432.                is cleared.  Pushing the _S_a_v_e _F_i_l_e button saves this
  433.                information in the designated file.  The _I_n_s_e_r_t _F_i_l_e
  434.                button is much like the _L_o_a_d _F_i_l_e button, except that
  435.                the current state is not cleared.  Instead, only the
  436.                masses and springs are loaded (the system paramaters
  437.                are not changed), and are added to the current
  438.                collection.   If no objects are selected when the
  439.                _I_n_s_e_r_t _F_i_l_e button is pressed, then all the objects in
  440.                the file are selected after they are loaded.
  441.  
  442.                  The filenames are entered in the text window, which
  443.                is located at the bottom right of the window.   For
  444.                consistency, the filenames should terminate with
  445.                "....xxxxsssspppp".  When a file is loaded or saved, this extension
  446.                is automatically added if not added by the user.
  447.                Standard emacs-like editing features are present.  The
  448.                following key controls can be used:
  449.                     ccccoooonnnnttttrrrroooollll----BBBB  move cursor backward
  450.                     ccccoooonnnnttttrrrroooollll----FFFF  move cursor forward
  451.                     ccccoooonnnnttttrrrroooollll----AAAA  goto beginning of line
  452.                     ccccoooonnnnttttrrrroooollll----EEEE  goto end of line
  453.                     ccccoooonnnnttttrrrroooollll----KKKK  kill to end of line
  454.                     ccccoooonnnnttttrrrroooollll----YYYY  yank from kill buffer
  455.                     ccccoooonnnnttttrrrroooollll----DDDD  delete character under cursor
  456.  
  457.  
  458.  
  459.      Page 7                                           (printed 7/7/95)
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.      XXXXSSSSPPPPRRRRIIIINNNNGGGGIIIIEEEESSSS((((1111))))   UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((SSSSeeeepppptttteeeemmmmbbbbeeeerrrr 1111,,,, 1111999999992222))))   XXXXSSSSPPPPRRRRIIIINNNNGGGGIIIIEEEESSSS((((1111))))
  467.  
  468.  
  469.  
  470.                     ccccoooonnnnttttrrrroooollll----UUUU  erase all input
  471.                     ccccoooonnnnttttrrrroooollll----TTTT  transpose character under cursor with
  472.                          previous character
  473.                     EEEEssssccccaaaappppeeee     exit from filename edit mode
  474.  
  475.                  By default, the directory which contains the
  476.                xxxxsssspppprrrriiiinnnnggggiiiieeeessss files is present automatically.  If the
  477.                environment variable SSSSPPPPRRRRIIIINNNNGGGGDDDDIIIIRRRR is set, then the default
  478.                directory is changed to reflect it.
  479.                  If a file error occurs (for example, the file does
  480.                not exist), a beep is emitted.
  481.  
  482.  
  483.           Other stuff
  484.                  The _G_O! button simply turns on and off the animation.
  485.                With _G_O! turned off, xxxxsssspppprrrriiiinnnnggggiiiieeeessss uses up little CPU
  486.                time.
  487.  
  488.                  The _S_h_o_w _S_p_r_i_n_g_s checkbox controls whether or not the
  489.                springs are drawn.  If there are a lot of springs,
  490.                animation may go faster with this option on.  Sometimes
  491.                an object will even look better with only the masses.
  492.  
  493.                  When placing masses or springs, objects can be placed
  494.                in a gridlike fashion if the _G_r_i_d _S_n_a_p checkbox is
  495.                enabled.  Masses will be separated (vertically and
  496.                horizontally) by the amount specified by the _G_r_i_d _S_n_a_p
  497.                slider.
  498.  
  499.                  When the _D_u_p_l_i_c_a_t_e button is pushed, all selected
  500.                masses and springs are duplicated.  The copy is left in
  501.                the same place, unselected.
  502.  
  503.                  By pushing the _S_e_l_e_c_t _A_l_l button, all masses and
  504.                springs are selected.
  505.  
  506.                  By pushing the _D_e_l_e_t_e button, or pressing the _D_e_l_e_t_e
  507.                key, all selected objects are deleted.  Note that if a
  508.                mass is deleted, all attached springs are also deleted
  509.                (even if they were not selected).
  510.  
  511.                  The _Q_u_i_t button quits the program.  This same effect
  512.                is found by pressing the _Q key.
  513.  
  514.  
  515.      FFFFIIIILLLLEEEE FFFFOOOORRRRMMMMAAAATTTT
  516.             The xxxxsssspppprrrriiiinnnnggggiiiieeeessss file format is human readable.  Each line
  517.           consists of a four letter command string, followed by the
  518.           parameters for that command.  The file must start with the
  519.           command "####1111....0000".  (This 1.0 refers to file format version
  520.           1.0, and not the version of xspringies being run) Each of
  521.           the commands below is on a line by itself.  There are no
  522.  
  523.  
  524.  
  525.      Page 8                                           (printed 7/7/95)
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.      XXXXSSSSPPPPRRRRIIIINNNNGGGGIIIIEEEESSSS((((1111))))   UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((SSSSeeeepppptttteeeemmmmbbbbeeeerrrr 1111,,,, 1111999999992222))))   XXXXSSSSPPPPRRRRIIIINNNNGGGGIIIIEEEESSSS((((1111))))
  533.  
  534.  
  535.  
  536.           blank lines allowed.  The file must end in a newline.
  537.  
  538.           The file consists of the following commands:
  539.                ccccmmmmaaaassss <current _M_a_s_s value>
  540.                eeeellllaaaassss <current _E_l_a_s_t_i_c_i_t_y value>
  541.                kkkksssspppprrrr <current _K_s_p_r_i_n_g value>
  542.                kkkkddddmmmmpppp <current _K_d_a_m_p value>
  543.                ffffiiiixxxxmmmm <boolean value for _F_i_x_e_d _M_a_s_s>
  544.                sssshhhhwwwwssss <boolean value for _S_h_o_w _S_p_r_i_n_g_s>
  545.                cccceeeennnntttt <mass id number of center mass>
  546.                   If there is no center mass (i.e. - center of screen
  547.                   is to be used), then the value of -_1 is used.
  548.                ffffrrrrcccceeee <force id number> <boolean active>
  549.                     <parameter #1 value> <parameter #2 value>
  550.                   The <force id number> sequence is as follows:
  551.                      0000 - Gravity
  552.                      1111 - Center of mass attraction force
  553.                      2222 - Center attraction force
  554.                      3333 - Wall repulsion force
  555.                vvvviiiisssscccc <current _V_i_s_c_o_s_i_t_y value>
  556.                ssssttttcccckkkk <current _S_t_i_c_k_i_n_e_s_s value>
  557.                sssstttteeeepppp <current _T_i_m_e _S_t_e_p value>
  558.                pppprrrreeeecccc <current _P_r_e_c_i_s_i_o_n value>
  559.                aaaaddddpppptttt <boolean value for _A_d_a_p_t_i_v_e _T_i_m_e _S_t_e_p>
  560.                ggggssssnnnnpppp <current _G_r_i_d _S_n_a_p value> <boolean enable>
  561.                wwwwaaaallllllll <boolean top> <boolean left> <boolean right>
  562.                     <boolean bottom>
  563.                mmmmaaaassssssss <mass id number> <x position value>
  564.                     <y position value> <x velocity value>
  565.                     <y velocity value> <mass value> <elasticity value>
  566.                   For each mass, the <mass id number> must be unique.
  567.                   They do not need to be in any order.  If a mass is
  568.                   fixed, then the <mass value> field is negated.
  569.                ssssppppnnnngggg <spring id number> <mass #1 id number>
  570.                     <mass #2 id number> <Kspring value> <Kdamp value>
  571.                     <rest length value>
  572.                   For each spring, the <spring id number> must be
  573.                   unique.  They do not need to be in any order.  The
  574.                   order of the <mass id number>'s is not important.
  575.  
  576.             All _v_a_l_u_e_s are floating point numbers.  All _i_d _n_u_m_b_e_r_s are
  577.           positive integers, and all _b_o_o_l_e_a_n values are non-zero/zero
  578.           for True/False.  It is possible to feed xxxxsssspppprrrriiiinnnnggggiiiieeeessss bogus
  579.           values.  It may produce interesting or amusing side effects,
  580.           but will most likely cause an object to explode or
  581.           xxxxsssspppprrrriiiinnnnggggiiiieeeessss to crash.
  582.  
  583.      AAAAUUUUTTTTHHHHOOOORRRR
  584.           Douglas DeCarlo (dmd@gradient.cis.upenn.edu)
  585.  
  586.           Please send demo files, comments, suggestions, bug reports,
  587.           bug fixes and enhancements.
  588.  
  589.  
  590.  
  591.      Page 9                                           (printed 7/7/95)
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.      XXXXSSSSPPPPRRRRIIIINNNNGGGGIIIIEEEESSSS((((1111))))   UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((SSSSeeeepppptttteeeemmmmbbbbeeeerrrr 1111,,,, 1111999999992222))))   XXXXSSSSPPPPRRRRIIIINNNNGGGGIIIIEEEESSSS((((1111))))
  599.  
  600.  
  601.  
  602.           With thanks to:
  603.                Elliott Evans
  604.                    Bitmap slave.
  605.  
  606.                Nathan Loofbourrow
  607.                    I bothered him a whole lot about the user
  608.                    interface.
  609.  
  610.                Drew Olbrich
  611.                    The blame for "stickiness" falls on him, as well as
  612.                    a few other things.
  613.  
  614.                Andy Witkin
  615.                    For teaching a really great physically based
  616.                    modeling course at CMU.  Many ideas (both methods
  617.                    and interface) came from that class.
  618.  
  619.                And thanks to the many other people who helped in
  620.                testing xxxxsssspppprrrriiiinnnnggggiiiieeeessss and make some of the neat demo
  621.                files, including James Helfrich, Brian Kelley, Patrick
  622.                Lopez, Chris Newman and Jef Poskanzer.
  623.  
  624.  
  625.      RRRREEEESSSSTTTTRRRRIIIICCCCTTTTIIIIOOOONNNNSSSS
  626.           xxxxsssspppprrrriiiinnnnggggiiiieeeessss runs faster on a monochrome display than on a
  627.           color display (usually).
  628.  
  629.           You probably don't want to run xxxxsssspppprrrriiiinnnnggggiiiieeeessss on a slow machine
  630.           or a machine which does slow bit-blitting operations.  Well,
  631.           I guess you could... But you would be sorry for even trying.
  632.  
  633.           Here is a good rule:  If xxxxsssspppprrrriiiinnnnggggiiiieeeessss isn't fun to use, then
  634.           your machine is either too slow, or it is overloaded.  Or
  635.           maybe you just aren't a fun person.  :-)
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.      Page 10                                          (printed 7/7/95)
  658.  
  659.  
  660.  
  661.